package org.thread.test06.ts.demo04;

/**
 * notify与notifyAll方法的使用
 *
 * wait方法的使用
 * <p>
 * 1）wait、notify、notifyAll - 这三个方法必须应用在同步块或者同步方法中
 * 2）这三个方法在Object类中定义，因此，所有的对象都可以访问这三个方法
 * 但是我们是通过(必须)锁对象来访问这三个方法
 *
 * @author CSY
 * @date 2025 - 03 - 13
 */
public class MainTest {
    /**
     * 静态方法只能访问静态成员
     *
     * @param args
     */
    public static void main(String[] args) {
        MyThread mt1 = new MyThread();
        MyThread mt2 = new MyThread();
        MyThread mt3 = new MyThread();


        mt1.start();
        mt2.start();
        mt3.start();



        mt1.setName("1");
        mt1.setName("2");
        mt1.setName("3");
        //设置优先级，那个优先级高唤醒的概率也就高
        mt3.setPriority(Thread.MAX_PRIORITY);

        //主线程睡眠5秒后唤醒子线程
        try {
            Thread.sleep(5000);
            synchronized(MyThread.LOCK){
                MyThread.LOCK.notify();
            }
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }



    }
}
